package com.coder4j.platform.service;

import com.coder4j.platform.config.GlobalConfig;
import com.coder4j.platform.entity.SysDictEntity;
import com.coder4j.platform.mapper.SysDictMapper;
import com.coder4j.platform.vo.SysDictQuery;
import com.coder4j.platform.vo.SysDictVO;
import com.coder4j.starter.tools.util.StringUtils;
import com.coder4j.starter.web.BaseServiceImpl;
import org.springframework.stereotype.Service;
import org.springframework.beans.BeanUtils;

import lombok.extern.slf4j.Slf4j;

import javax.annotation.Resource;
import java.util.List;

/**
 * 系统字典
 * @author keller
 * @date 2025-05-30 21:19:10
 */
@Service
@Slf4j
public class SysDictService extends BaseServiceImpl<SysDictMapper,SysDictEntity,SysDictVO> {

    @Resource
    private SysDictMapper mapper;

    @Override
    public SysDictVO entity2Vo(SysDictEntity entity) {
        SysDictVO vo = new SysDictVO();
        BeanUtils.copyProperties(entity,vo);
        vo.setValue(entity.getCode());
        vo.setKey(entity.getId() + "");
        return vo;
    }

    @Override
    public SysDictEntity vo2Entity(SysDictVO vo) {
        SysDictEntity entity = new SysDictEntity();
        BeanUtils.copyProperties(vo, entity);
        if(entity.getParentId() == null){
            entity.setParentId(GlobalConfig.RootId);
        }
        if(StringUtils.isEmpty(entity.getBizValue())){
            entity.setBizValue(entity.getCode());
        }
        if(entity.getSort()== null){
            entity.setSort(GlobalConfig.DEFAULT_SORT);
        }
        return entity;
    }

    public List<SysDictVO> getTypeOptions() {
        SysDictQuery query = new SysDictQuery();
        query.setType("type");
        return this.baseQueryVOList(query);
    }
}